[][src]Crate iso8601_duration

Parse ISO8601 duration format.

Installation

iso8601-duration = "0.1.0"

Usage

use iso8601_duration::Duration;
use nom::{error::ErrorKind, Err};

 assert_eq!(
     Duration::parse("P23DT23H"),
     Ok(Duration::new(0., 0., 23., 23., 0., 0.))
 );
 assert_eq!(
     Duration::parse("P3Y6M4DT12H30M5S"),
     Ok(Duration::new(3., 6., 4., 12., 30., 5.))
 );
 assert_eq!(
     Duration::parse("P0.5Y"),
     Ok(Duration::new(0.5, 0., 0., 0., 0., 0.))
 );
 assert_eq!(
     Duration::parse("P0.5Y0.5M"),
     Ok(Duration::new(0.5, 0.5, 0., 0., 0., 0.))
 );
 assert_eq!(
     Duration::parse("P12W"),
     Ok(Duration::new(0., 0., 84., 0., 0., 0.))
 );

 assert_eq!(
     Duration::parse("PT"),
     Err(Err::Error(("", ErrorKind::Verify)))
 );
 assert_eq!(
     Duration::parse("P12WT12H30M5S"),
     Err(Err::Error(("T12H30M5S", ErrorKind::Eof)))
 );
 assert_eq!(
     Duration::parse("P0.5S0.5M"),
     Err(Err::Error(("0.5S0.5M", ErrorKind::Verify)))
 );
 assert_eq!(
     Duration::parse("P0.5A"),
     Err(Err::Error(("0.5A", ErrorKind::Verify)))
 );

Structs

Duration